// 导入路由
import { Message } from 'element-ui'
import router from './router'
// 导入仓库
import store from './store'
// import { removeToken } from './utils/auth'

// 声明白名单，不需要登录
const whiteList = ['/login', '/404']
// 注册导航守卫
router.beforeEach(async(to, from, next) => {
  const _token = store.getters.token
  // token判断
  if (_token) {
    // 用户信息的判断
    if (store.getters.isLogin && to.path === '/login') {
      // 有token，有用户信息，直接去首页
      return next('/')
    }
    // 去的不是首页 用户信息存在
    if (store.getters.isLogin) {
      // 有token 有用户信息放走
      return next()
    }
    // 用户信息不存在，token存在    尝试获取
    try {
      await store.dispatch('user/getUserInfo')
      if (to.path === '/login') {
        return next('/')
      }
      return next()
    } catch (error) {
      // 删除token
      // removeToken()/
      store.dispatch('user/logout')
      // 提示用户
      Message.error('请重新登录')
      // 登录
      if (to.path === '/login') {
        return next()
      }
      return next('/login?redirect=' + to.fullPath)
    }
  }
  // 没有token白名单
  if (whiteList.includes(to.path)) {
    return next()
  }
  // 不在白名单
  return next('/login')
})
